home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1995 #2
/
Amiga Plus CD - 1995 - No. 2.iso
/
pd
/
mui
/
casslabel
/
source
/
output.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-04-11
|
8KB
|
269 lines
/* $VER: output.c 2.1 (05.06.94)
*/
#include "global.h"
/* Locale support */
#define CATCOMP_NUMBERS
#define CATCOMP_BLOCK
#include "CassLabel_strings.h"
/**********************************************************************
* Generate the output *
**********************************************************************/
void generate_file(char *path)
{
char *pos1, *pos2;
char bufline1[256], bufline2[256], argline[8][256];
int buflineflag = 0, arglinecount = 0;
struct NodeEntry *entry, emptynode = {"", ""};
long endA, endB, translateflag;
FILE *fh, *out;
/* Get number of all entries */
get(LV_SideA, MUIA_List_Entries, &endA);
get(LV_SideB, MUIA_List_Entries, &endB);
/* Get state of Translate-Checkmark */
get(CM_Translate, MUIA_Selected, &translateflag);
if ((fh = fopen(GetStr(PS_PopFormat_String), "r")) && (out = fopen(path, "w")))
{
while (pos1 = fgets(bufline1, 256, fh))
{
if (bufline1[0] == '@')
{
/* Read in argline */
pos1++;
while (*pos1 != '\n')
{
pos2 = strchr(pos1, '@');
*pos2++ = '\0';
/* Insert the common entries */
if (!strcmp(pos1,"POSITION"))
strcpy(argline[arglinecount++], CYA_Position[GetCycle(CY_Position)]);
if (!strcmp(pos1,"LENGTH"))
strcpy(argline[arglinecount++], CYA_Length[GetCycle(CY_Length)]);
if (!strcmp(pos1,"NUMBER"))
strcpy(argline[arglinecount++], GetStr(ST_Number));
if (!strcmp(pos1,"TOPTITLE_A"))
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(GetStr(ST_TitleA)));
else
strcpy(argline[arglinecount++], GetStr(ST_TitleA));
if (!strcmp(pos1,"TOPGROUP_A"))
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(GetStr(ST_GroupA)));
else
strcpy(argline[arglinecount++], GetStr(ST_GroupA));
if (!strcmp(pos1,"DATE_A"))
strcpy(argline[arglinecount++], GetStr(ST_DateA));
if (!strcmp(pos1,"SOURCE_A"))
strcpy(argline[arglinecount++], CYA_Source[GetCycle(CY_SourceA)]);
if (!strcmp(pos1,"NOISER_A"))
strcpy(argline[arglinecount++], CYA_NoiseR[GetCycle(CY_NoiseRA)]);
if (!strcmp(pos1,"TOPTITLE_B"))
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(GetStr(ST_TitleB)));
else
strcpy(argline[arglinecount++], GetStr(ST_TitleB));
if (!strcmp(pos1,"TOPGROUP_B"))
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(GetStr(ST_GroupB)));
else
strcpy(argline[arglinecount++], GetStr(ST_GroupB));
if (!strcmp(pos1,"DATE_B"))
strcpy(argline[arglinecount++], GetStr(ST_DateB));
if (!strcmp(pos1,"SOURCE_B"))
strcpy(argline[arglinecount++], CYA_Source[GetCycle(CY_SourceB)]);
if (!strcmp(pos1,"NOISER_B"))
strcpy(argline[arglinecount++], CYA_NoiseR[GetCycle(CY_NoiseRB)]);
/* Insert the list entries */
if (!strcmp(pos1,"TITLE_A"))
{
pos1 = pos2;
pos2 = strchr(pos1, '@');
*pos2++ = '\0';
if (atoi(pos1) - 1 < endA)
DoMethod(LV_SideA, MUIM_List_GetEntry, atoi(pos1) - 1, &entry);
else
entry = &emptynode;
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(entry->title));
else
strcpy(argline[arglinecount++], entry->title);
}
if (!strcmp(pos1,"GROUP_A"))
{
pos1 = pos2;
pos2 = strchr(pos1, '@');
*pos2++ = '\0';
if (atoi(pos1) - 1 < endA)
DoMethod(LV_SideA, MUIM_List_GetEntry, atoi(pos1) - 1, &entry);
else
entry = &emptynode;
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(entry->group));
else
strcpy(argline[arglinecount++], entry->group);
}
if (!strcmp(pos1,"EXTENSION_A"))
{
pos1 = pos2;
pos2 = strchr(pos1, '@');
*pos2++ = '\0';
if (atoi(pos1) - 1 < endA)
DoMethod(LV_SideA, MUIM_List_GetEntry, atoi(pos1) - 1, &entry);
else
entry = &emptynode;
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(entry->extension));
else
strcpy(argline[arglinecount++], entry->extension);
}
if (!strcmp(pos1,"TITLE_B"))
{
pos1 = pos2;
pos2 = strchr(pos1, '@');
*pos2++ = '\0';
if (atoi(pos1) - 1 < endB)
DoMethod(LV_SideB, MUIM_List_GetEntry, atoi(pos1) - 1, &entry);
else
entry = &emptynode;
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(entry->title));
else
strcpy(argline[arglinecount++], entry->title);
}
if (!strcmp(pos1,"GROUP_B"))
{
pos1 = pos2;
pos2 = strchr(pos1, '@');
*pos2++ = '\0';
if (atoi(pos1) - 1 < endB)
DoMethod(LV_SideB, MUIM_List_GetEntry, atoi(pos1) - 1, &entry);
else
entry = &emptynode;
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(entry->group));
else
strcpy(argline[arglinecount++], entry->group);
}
if (!strcmp(pos1,"EXTENSION_B"))
{
pos1 = pos2;
pos2 = strchr(pos1, '@');
*pos2++ = '\0';
if (atoi(pos1) - 1 < endB)
DoMethod(LV_SideB, MUIM_List_GetEntry, atoi(pos1) - 1, &entry);
else
entry = &emptynode;
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(entry->extension));
else
strcpy(argline[arglinecount++], entry->extension);
}
/* Locale Support */
if (!strcmp(pos1,"LANG_POSITION"))
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(GetLocaleString(MSG_LABEL_POSITION)));
else
strcpy(argline[arglinecount++], GetLocaleString(MSG_LABEL_POSITION));
if (!strcmp(pos1,"LANG_LENGTH"))
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(GetLocaleString(MSG_LABEL_LENGTH)));
else
strcpy(argline[arglinecount++], GetLocaleString(MSG_LABEL_LENGTH));
if (!strcmp(pos1,"LANG_DATE"))
if (translateflag)
strcpy(argline[arglinecount++], translate_to_latex(GetLocaleString(MSG_LABEL_DATE)));
else
strcpy(argline[arglinecount++], GetLocaleString(MSG_LABEL_DATE));
pos1 = pos2;
}
/* Begin the printing of bufline2 & argline */
switch (arglinecount)
{
case 1:
fprintf(out, bufline2, argline[0]);
break;
case 2:
fprintf(out, bufline2, argline[0], argline[1]);
break;
case 3:
fprintf(out, bufline2, argline[0], argline[1], argline[2]);
break;
case 4:
fprintf(out, bufline2, argline[0], argline[1], argline[2], argline[3]);
break;
case 5:
fprintf(out, bufline2, argline[0], argline[1], argline[2], argline[3], argline[4]);
break;
case 6:
fprintf(out, bufline2, argline[0], argline[1], argline[2], argline[3], argline[4], argline[5]);
break;
case 7:
fprintf(out, bufline2, argline[0], argline[1], argline[2], argline[3], argline[4], argline[5], argline[6]);
break;
case 8:
fprintf(out, bufline2, argline[0], argline[1], argline[2], argline[3], argline[4], argline[5], argline[6], argline[7]);
break;
}
arglinecount = 0;
buflineflag = 0;
}
else
{
if (!buflineflag)
buflineflag = 1;
else
fprintf(out, bufline2);
strcpy(bufline2, bufline1);
}
}
/* Is the buffer full? */
if (buflineflag)
fprintf(out, bufline2);
fclose(fh);
fclose(out);
}
}
/**********************************************************************
* Print output *
**********************************************************************/
void print(void)
{
char pathbuf[256], linebuf[512];
static struct TagItem ProcTags[] =
{
SYS_Input, 0,
SYS_Output, 0,
NP_Error, 0,
TAG_DONE
};
stccpy(pathbuf, dirbuf_generate, 256);
AddPart(pathbuf, "CassLabel_out", 256);
generate_file(pathbuf);
sprintf(linebuf, "RX %s %s %s\n", GetStr(PS_PopDriver_String), pathbuf, dirbuf_generate);
ProcTags[0].ti_Data = Input();
ProcTags[1].ti_Data = Output();
ProcTags[2].ti_Data = (ULONG) stderr;
SystemTagList(linebuf, ProcTags);
}